# Сегодняшняя задача Ксюши — провести мастер-класс по программированию для стажеров Тинькофф Старта. Для этого она решила устроить небольшую игру: Ксюша будет поддерживать множество, а стажеры будут говорить числа, которые в него добавить. После каждого добавления Ксюша будет называть максимальное значения побитового исключающего ИЛИ среди всех пар чисел этого множества.
# Формально, если множество после очередной операции добавления равно S, то Ксюша хочет найти в нем такие два числа a, b ∈ Sb∈S, что значение a ⊕ b максимально. Если число уже присутствовало в множестве до добавления, само множество никак не меняется. Выводить ответ при этом нужно после каждого добавления, даже если множество осталось прежним.
# Ксюша знает, что кто-то из стажеров наверняка знает, как она будет считать ответы для этой игры, поэтому просит вас написать программу, которая будет обрабатывать запросы на добавление чисел.
# Формат входных данных
# В первой строке вводится целое число q (1 ≤ q ≤ 3 ⋅ 10^5) — количество запросов.
# Следующие q строк описывают запросы. i-ая строка содержит целое число k_i (0 ≤ k_i ≤ 2^{32} - 1), которое стажеры просят добавить во множество.
# Формат выходных данных
# Выведите q строк, чтобы i-ая строка содержала единственное целое число x_i — максимальное значение исключающего ИЛИ по всем парам чисел из множества после первых i операций.

n = int(input())
num = int(input())
max = 0
nums = {num}
print(0)

while n > 1:
	num2 = int(input())
	nums.add(num2)
	nums_list = list(nums)
	for i in range(len(nums_list)):
	   			for j in range(len(nums_list)):
	   				if nums_list[i] ^ nums_list[j] > max:
	   					max = nums_list[i] ^ nums_list[j]
	n = n - 1
	print(max)
